import { createApp } from 'vue'
import { createPinia } from 'pinia'
import './style.css'
import App from './App.vue'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import * as ElementPlusIconsVue from '@element-plus/icons-vue'
import { registerComponents, initializeComponentLibrary } from './components/library'
// 导入主题服务
import themeService from './services/ThemeService'
// 导入组件管理服务
import componentManager from './services/ComponentManagerService'

// 创建Vue应用
const app = createApp(App)
const pinia = createPinia()

// 全局注册所有 Element Plus 图标
for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
  app.component(key, component)
}

// 使用插件
app.use(pinia)
app.use(ElementPlus)

// 异步初始化应用
async function initializeApp() {
  try {
    console.log('[Main] 开始初始化应用...')
    
    // 1. 初始化组件库 - 扫描所有组件
    await initializeComponentLibrary()
    console.log('[Main] 组件库初始化完成')
    
    // 2. 注册组件到Vue应用
    registerComponents(app)
    console.log('[Main] 组件注册完成')
    
    // 3. 组件管理服务初始化
    if (app._context?.components) {
      componentManager.initializeComponents(app._context.components)
      console.log('[Main] 组件管理服务初始化完成')
    }
    
    // 4. 初始化主题
    themeService.initTheme()
    console.log('[Main] 主题初始化完成')
    
    // 5. 挂载应用
    app.mount('#app')
    console.log('[Main] 应用挂载完成')
  } catch (error) {
    console.error('[Main] 应用初始化失败:', error)
  }
}

// 启动应用
initializeApp()
